% !Mode:: "TeX:UTF-8"

\chapter{项目问题及反思}

\section{后端问题}

\begin{enumerate}
    \item
    问题点：在为登陆时的密码设置token后，其他文件没有修改，发现登陆正常，但注册无法正常进行。

    解决对策：通过查阅网上资料和询问老师、学长，最终发现是前后端跨域问题。问题在于如果带有自定义的标头会发送一个预检请求，预检请求会不含有token标头。
    发送了两次请求，一次预检一次完整的请求，预检不带token标头，所以说会为null，此处应该修改。
    保留增加的Token验证过滤器，在Mvc中增加对OPTIONS的验证，使其直接通过请求，问题解决。

    结果反思：在前后端分离的项目中，增加过滤器时一定要注意跨域问题。

    \item
    问题点：在完成用户注册时商家和客户身份的选择功能时，前端页面点击客户按钮，可以成功注册；
    但点击商家按钮，显示商家注册失败。

    解决对策：检查UserMapper中的sql查询语句，发现与数据库的属性名一致，语句书写也没有问题；
    检查前端代码，代码没有bug；最终发现是数据库将用户身份属性设置成了“user_type”，下划线在前后端代码
    中的书写格式很容易出问题，最后把该属性改为“usertype”，最终商家注册成功。

    结果反思：在代码中尽量少使用字符来定义变量名等，非常容易报错出问题。

    \item
    问题点：在修改RESTful风格时，后端修改之后，再次进行调试，很多功能不能正常运行。

    解决对策：检查发现是由于修改了前后端接口，但前端并未修改，导致不能正常修改。

    结果反思：前后端一定要衔接好，在后端接口处修改之后，一定要告知前端管理人员。

  \end{enumerate}
  
\section{前端问题}

\begin{enumerate}

    \item
    问题点： 判定商家修改商品信息权限时，经过测试发现谁都可以进行修改。

    解决对策：经检查 发现是businessId和userId数据类型不同，一个是string，一个是int。 
    
    结果反思：虽然是一个简单的问题，但是正说明我们应该对数据详细了解，每个数据在哪用，是什么类型等等，以避免类似问题出现。
   
    \item
    问题点：很多时候运行时浏览器显示状态码400，或者无法跳转正确网页，跳转进入空白网页。

    解决对策：全局检查时发现是路由大小写或者没有配置路由的问题。
    
    \item
    问题点： 在很多信息修改时，例如购物车的数量、注册登录时，有的时候用的localStorage，有的时候用的sessionStorage，有的时候会出错。

    解决对策：发现是混用了，后来经过查阅资料了解了各自的作用域和持久性以及数据同步问题和生命周期等，进行了相应的修改。
    
    结果反思：在使用两者时需要确保逻辑清晰，明确知道哪些数据应该在会话结束时清除，哪些数据应该持久保存。如果管理不当，可能会出现数据更新不及时或删除不干净的情况。
   
    \item
    问题点： 在处理异步操作时，我们遇到了一些数据竞态（race condition）的问题，特别是在多个并发请求的情况下。

    解决对策：为了解决这个问题，我们采用了防抖（debounce）和节流（throttle）技术，并且更加谨慎地管理异步操作的状态。
    
    \item
    问题点：一些布局和样式在不同设备上不一致的问题。

    解决对策：采用了移动优先的设计策略，并使用了CSS媒体查询和弹性布局（Flexbox）。还引入了一个统一的设计系统，确保在不同屏幕尺寸下保持一致的用户体验。
    
   
  \end{enumerate}




  